package horloge;

import java.util.Calendar;

import fr.alma.interfacesPlugins.PluginEntree;
import fr.alma.observation.Observateur;
import fr.alma.observation.Observer;

public class AccesHorloge implements PluginEntree, Runnable {

	private String heure;
	private boolean threadActif;
	private Observer observer;
	
	public AccesHorloge() {
		this.observer = new Observer();
	}
	
	public Class<?> getReturnType() {
		return String.class;
	}

	public String getCategorie() {
		return "horloge";
	}

	public String getDescription() {
		return "Accede a l'horloge du systeme";
	}

	public void ajoutObservateur(Observateur observateur) {
		this.observer.ajoutObservateur(observateur);
	}

	public void updateObservateurs() {
		this.observer.updateObservateurs(this.heure);
	}

	public void start() {
		Thread t = new Thread(this);
		t.start();
		this.observer.start();
	}

	public void stop() {
		this.threadActif = false;
		this.observer.stop();
	}

	public void run() {
		this.threadActif = true;
		while(this.threadActif){
			Calendar cal = Calendar.getInstance();
			this.heure = 	/* Les heures */
					cal.get(Calendar.HOUR_OF_DAY) + " : " 
					+ 
					( 		/* Les minutes */
						cal.get(Calendar.MINUTE) < 10
						? "0" + cal.get(Calendar.MINUTE)
						: cal.get(Calendar.MINUTE)
					)
					+ " : " 
					+
					( 		/* Les secondes */
						(cal.get(Calendar.SECOND)< 10) 
						? "0"+cal.get(Calendar.SECOND) 
						: cal.get(Calendar.SECOND)
					);
			this.updateObservateurs();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}		
	}

}
